package com.xiaoyu.arrays;

import java.util.Arrays;

/**
 * @program: DS_and_A
 * @description: 一维数组的动态和!
 * 给你一个数组 nums 。数组「动态和」的计算公式为：runningSum[i] = sum(nums[0]…nums[i]) 。
 *
 * 请返回 nums 的动态和。
 *
 * 示例 1：
 * 输入：nums = [1,2,3,4]
 * 输出：[1,3,6,10]
 * 解释：动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。
 *
 * @author: YuWenYi
 * @create: 2021-06-03 12:15
 **/
public class RunningSum_1480 {

    //如果原数组不可变,即nums数组不可更改,那么就得新创建一个res数组
    public static int[] runningSum(int[] nums) {
        int len = nums.length;
        int[] res = new int[len];
        res[0] = nums[0];
        //好家伙,一道这么简单的题,也用到了dp
        for (int i = 1; i < len; i++) {
            res[i] = res[i-1] + nums[i];
        }
        return res;
    }
    //如果原数组可以变,那么可以更简单的这样写:
    public static int[] runningSum1(int[] nums) {
        for (int i = 1; i < nums.length; i++) {
            nums[i] += nums[i-1];
        }
        return nums;
    }

    public static void main(String[] args) {
        int[] nums = {1,2,3,4};
        int[] res = runningSum1(nums);
        System.out.println("(res) = " + Arrays.toString(res));
    }
}
